#ifndef WIDGET_FUNCD_WEATHER_H
#define WIDGET_FUNCD_WEATHER_H

#include "widget_assist_weather_datebase.h"

#include <QWidget>
#include <QLabel>
#include <QPainter>
#include <QPen>
#include <QPoint>

#include <QUrl>
#include <QNetworkRequest>
#include <QNetworkAccessManager>
#include <QNetworkReply>

#include <QCoreApplication>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>

#include <QString>
#include <QList>
#include <QVector>
#include <QDebug>
#include <qtime>

#include <QRegularExpression>


namespace Ui {
class Widget_funcD_Weather;
}


// 天气类---------------------------------------------
class WeatherDay {
public:
    QString date;          // 日期
    QString week;          // 星期几
    QString highTemp;      // 最高温度
    QString lowTemp;       // 最低温度
    QString weatherType;   // 天气状态
    QString windDirection; // 风向
    QString windLevel;     // 风力等级

    // 构造函数，从JSON对象初始化WeatherDay对象
    WeatherDay(const QJsonObject& obj) {
        date = obj["ymd"].toString();
        week = obj["week"].toString();
        highTemp = obj["high"].toString();
        lowTemp = obj["low"].toString();
        weatherType = obj["type"].toString();
        windDirection = obj["fx"].toString();
        windLevel = obj["fl"].toString();
    }
};



class Widget_funcD_Weather : public QWidget
{
    Q_OBJECT
    
public:
    explicit Widget_funcD_Weather(QWidget *parent = nullptr);
    ~Widget_funcD_Weather();

    QNetworkAccessManager * Network_Http; // HTTP类

    Widget_assist_Weather_Datebase * db;// 数据库类

    // 解JSON函数
    void parssWeatherDate(const QByteArray &jsonData);

    // 显示对应天气的图片函数
    QPixmap Disp_pixmap_form_week_tianqi(QString str);

    // 遍历数组并对界面进行更新
    void travel_vector(const std::vector<WeatherDay>& forecast);

    // 从字符串中提取数字
    QString extractTemperature(const QString &input);

    // 存储七天天气的数组
    std::vector<WeatherDay> forecast;

private:
    Ui::Widget_funcD_Weather *ui;
};

#endif // WIDGET_FUNCD_WEATHER_H
